package com.rerun.common.jpush;

import cn.jpush.api.push.PushResult;

import java.util.List;

/**
 * jpush 操作
 *
 * @author dax.
 * @version v1.0
 * @since 2017 /11/6 16:03
 */
public interface Operations {
    /**
     * 向所有用户进行alter消息推送，前台弹出.
     *
     * @param msg 推送消息
     * @return 推送结果回执 push result
     */
    PushResult pushAllAlter(String msg);

    /**
     * 向所有用户进行自定义消息推送，APP后台才能看到.
     *
     * @param msg the msg
     * @return the push result
     */
    PushResult pushAllHidden(String msg);

    /**
     * 向指定的设备id集合用户进行自定义消息推送，APP后台才能看到.
     * <p>
     * 客户端初始化 JPush 成功后，JPush 服务端会分配一个 Registration ID,
     * 作为此设备的标识（同一个手机不同 APP 的 Registration ID 是不同的）。
     * 开发者可以通过指定具体的 Registration ID 来进行对单一设备的推送
     *
     * @param registrationIds the registration ids
     * @param msgTitle        消息标题
     * @param msg             the msg
     * @return the push result
     */
    PushResult pushAllHiddenByRegistrationId(String[] registrationIds, String msgTitle, String msg);

    /**
     * 向指定的设备id集合用户进行自定义消息推送.
     *
     * @param registrationIds the registration ids
     * @param msg             the msg
     * @return the push result
     */
    PushResult pushAllAlertByRegistrationId(String[] registrationIds, String msg);

    /**
     * 向指定的别名集合用户进行Alert消息推送 .
     *
     * @param aliases 别名  每个用户只能指定一个别名。 同一个应用程序内，对不同的用户，建议取不同的别名 具有唯一性。
     * @param msg     the msg
     * @return the push result
     */
    PushResult pushAlertByAlias(List<String> aliases, String msg);

    /**
     * 向指定的标签集合用户进行Alert消息推送 .
     *
     * @param tags the tags
     * @param msg  the msg
     * @return the push result
     */
    PushResult pushAlertByTags(List<String> tags, String msg);

}
